class User:  # 类名后加括号：继承
    userCount = 0       # 类属性

    def __init__(self, name, age, city):  # 构造函数
        self.name = name    # 实例属性
        self.age = age
        self.city = city
        User.userCount += 1
        print('11111')

    def get_name(self):
        return self.name

    def get_age(self):
        return self.age

    def get_city(self):
        return self.city

    def set_name(self, name):
        self.name = name

    def set_age(self, age):
        self.age = age

    def set_city(self, city):
        self.city = city

    @classmethod    # 用来标记类方法  可以对类属性进行访问和修改，但无法直接访问实例属性
    def userEvent(cls):
        print('注册人数为%d' % cls.userCount)

    @staticmethod   # 静态方法  不能访问类属性，也不能访问实例属性
    def println():
        print('静态方法')


tom = User('zhang', 18, 'zzz')
tom2 = User('zhang', 18, 'zzz')
tom.set_age(20)
print(tom.get_age(), tom.get_city(), tom.get_name())
print(type(tom))
print(tom.__dict__)  # 打印tom
User.userEvent()
User.println()
